package cn.comtom.ewbs.signature.service;

import java.io.File;
import java.io.IOException;
import java.util.List;

import cn.comtom.ewbs.signature.common.vo.request.CertApplyReq;
import cn.comtom.ewbs.signature.common.vo.response.CertResp;
import cn.tass.exceptions.YJException;

public interface ISignatureService {
	
	public static final boolean isWindows = System.getProperty("os.name").toLowerCase().contains("win");
	
	default String getProjectPath(){
		String projectSoPath = null;
		try {
			projectSoPath = new File("").getCanonicalPath();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return projectSoPath;
	}
	
	/**
	 * 初始化签名设备
	 * @param type 设备名
	 * @return
	 */
	boolean initSignDev(String type);
	
    /**
	     * 对文件签名
	* @param data
	* @return
	*/
	String getFileSign(byte[] data);
	
	/**
	*  对文件验签
	* @param data
	* @return
	*/
	Boolean verifyFileSign(byte[] data, String signValue) throws YJException;
	
    /**
           * 获取签名-字符串
     * @param data
     * @return
     */
    String getByteSign(byte[] data);

    /**
         * 验证签名-字符串
     * @param data
     * @param signValue
     * @return
     * @throws YJException
     */
    Boolean verifyByteSign(byte[] data, String signValue) throws YJException;

    /**
     * 申请信任列表、证书列表
     * @param certApplyReq
     * @return
     */
    CertResp certApply(CertApplyReq certApplyReq);

	/**
	 * 导入证书
	 * @param certs
	 * @return
	 */
	Boolean importCert(List<String> certs);

	/**
	 * 导入信任列表
	 * @param certauthList
	 * @return
	 */
	Boolean importCertauthList(String certauthList);

}
